while (w)
{
if (release)
- gtk_widget_unset_state_flags (w, GTK_STATE_FLAG_ACTIVE);
+ gtk_widget_set_active_state (w, FALSE);
else
- gtk_widget_set_state_flags (w, GTK_STATE_FLAG_ACTIVE, FALSE);
+ gtk_widget_set_active_state (w, TRUE);
w = _gtk_widget_get_parent (w);
}
priv = widget_class->priv;
return priv->accessible_role;
}
+
+void
+gtk_widget_set_active_state (GtkWidget *widget,
+ gboolean active)
+{
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+
+ if (active)
+ {
+ priv->n_active++;
+ gtk_widget_set_state_flags (widget, GTK_STATE_FLAG_ACTIVE, FALSE);
+ }
+ else
+ {
+ if (priv->n_active == 0)
+ {
+ g_warning ("Broken accounting of active state for widget %p(%s)",
+ widget, G_OBJECT_TYPE_NAME (widget));
+ }
+ else
+ priv->n_active--;
+
+ if (priv->n_active == 0)
+ gtk_widget_unset_state_flags (widget, GTK_STATE_FLAG_ACTIVE);
+ }
+}
guint8 verifying_invariants_count;
#endif
+ guint8 n_active;
+
int width_request;
int height_request;
GtkWidget * gtk_widget_common_ancestor (GtkWidget *widget_a,
GtkWidget *widget_b);
+void gtk_widget_set_active_state (GtkWidget *widget,
+ gboolean active);
+
void gtk_widget_cancel_event_sequence (GtkWidget *widget,
GtkGesture *gesture,
GdkEventSequence *sequence,